home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir43 / med300.zip / MELINTBL.CLA < prev    next >
Text File  |  1994-02-22  |  3KB  |  74 lines

  1.  
  2. !▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3. !█                                     █
  4. !█ MELINTBL.CLA                                                          █
  5. !█ Line table management procedures                     █
  6. !█                                     █
  7. !█ Revision Number: 1                             █
  8. !█ Revision Date  : 22-Feb-94                                            █
  9. !█                                     █
  10. !█ Revision History                             █
  11. !█   1 Created                                 █
  12. !█                                     █
  13. !▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  14.  
  15.               MEMBER('MEMOEDIT')
  16.  
  17. !═══════════════════════════════════════════════════════════════════════
  18. !               Adjust line pointers
  19. !═══════════════════════════════════════════════════════════════════════
  20. ME_AdjLines   PROCEDURE( usLine, usAmount )
  21.  
  22.           ! Locals:
  23. usIndex          USHORT                 ! Line index
  24.  
  25.   CODE
  26.   LOOP usIndex = usLine TO RECORDS(qLine)     ! Loop for each line
  27.     GET(qLine, usIndex)                 !   Get table entry
  28.     QLN:usLineStart += usAmount             !   Adjust line pointer
  29.     PUT(qLine)                     !   Save back to table
  30.   .                         ! End loop
  31.   RETURN
  32.  
  33.  
  34. !═══════════════════════════════════════════════════════════════════════
  35. !          Find line index for passed offset
  36. !═══════════════════════════════════════════════════════════════════════
  37. ME_LineIndex  FUNCTION( usOffset )
  38.  
  39.           ! Locals:
  40. usIndex          USHORT                 ! Line index
  41.  
  42.   CODE
  43.   LOOP usIndex = 1 TO RECORDS(qLine)         ! Loop for each line
  44.     GET(qLine, usIndex)                 !   Get table entry
  45.     IF QLN:usLineStart > usOffset THEN BREAK.     !   Break if found
  46.   .                         ! End loop
  47.   RETURN( usIndex - 1 )                 ! Return line index
  48.  
  49.  
  50. !═══════════════════════════════════════════════════════════════════════
  51. !        Find starting offset for passed line index
  52. !═══════════════════════════════════════════════════════════════════════
  53. ME_LineStart  FUNCTION( usLineNdx )
  54.  
  55.   CODE
  56.   usLineNdx = ME_Min(usLineNdx, RECORDS(qLine))  ! Adjust for overshoot
  57.   GET(qLine, usLineNdx)                 ! Return line start
  58.   RETURN( QLN:usLineStart )
  59.  
  60.  
  61. !═══════════════════════════════════════════════════════════════════════
  62. !        Find ending offset for passed line index
  63. !═══════════════════════════════════════════════════════════════════════
  64. ME_LineEnd    FUNCTION( usLineNdx )
  65.  
  66.   CODE
  67.   IF usLineNdx >= RECORDS(qLine)         ! If past last line
  68.     RETURN( ME_Max(MED:usCharacters-1, 0) )      !   Return end of document
  69.   ELSE                         ! Else
  70.     GET(qLine, usLineNdx+1)             !   Get table entry
  71.     RETURN( QLN:usLineStart - 1 )         !   Return line end
  72.   .                         ! Endif
  73.  
  74.